package proyectoX.src.municiones;

import java.awt.Point;
import java.awt.Rectangle;

import javax.swing.ImageIcon;

import proyectoX.src.aplicacion.Nivel;
import proyectoX.src.armas.arma;

/**
 * Munición correspondiene al arma secundario de la nave grande. Rebota en las paredes.
 *
 */
public class MunicionLaserRebote extends MunicionX {
	
	protected boolean derecha;
	
	/**
	 * Crea a la munición con los datos pasados por parámetro.
	 * @param posX Posición x.
	 * @param posY Posición y.
	 * @param e Arma que la dispara.
	 * @param nivel Nivel actual.
	 */
	public MunicionLaserRebote(int posX, int posY, arma e,Nivel nivel) {
		super(e,nivel,0);	
		ImageIcon image = new ImageIcon(this.getClass().getResource("/proyectoX/sprites/disparo_rebote.png"));			
		this.setIcon(image);
		this.setVisible(true);
		this.setSize(image.getIconWidth(), image.getIconHeight());		
		this.setLocation(posX+23, posY-2);
		derecha=true;
	}

	@Override
	/**
	 * Sube verticalmente pero desplazándose hacia la derecha o izquierda. Si choca con
	 * una "pared" de la pantalla empieza a desplazarse en la dirección contraria.
	 */
	public void actualizarPosicion() {
		int posY;
		if(derecha){
			posY=30;
		}
		else posY=-30;
		
		Point position = this.getLocation();
		position.translate(posY,-5);
		this.setLocation(position);
	    if(position.getX()>=nivel.getTamanoPantallaX()-110){
			derecha=false;
		}
		else if(position.getX()<=0+30)derecha=true;
	}

	@Override
	/**
	 * Devuelve el área de colisión de la munición. En este caso es nula porque no colisiona.
	 * @return Área de colisión.
	 */
	public Rectangle getBounds() {
		return new Rectangle(this.getX()+9, this.getY()+7, this.getWidth()+45, this.getHeight()+47);
	}

	@Override
	/**
	 * Pide a nivel que calcule colisiones con naves enemigas.
	 * @return Verdadero si colisionó, falso en caso contrario.
	 */
	public boolean calcularColisiones() {
		return nivel.calcularColisionConEnemigas(this);

	}



}

